Skip Headers

Oracle® Streams Concepts and Administration 10g Release 2 (10.2) Part Number B14229-02 |
Home | Book List | Contents | Index | Master Index | Feedback

Previous | Next
| View PDF

# A XML Schema for LCRs

The XML schema described in this appendix defines the format of a logical change record (LCR). The Oracle XML DB must be installed to use the XML schema for LCRs.

This appendix contains this topic:

- Definition of the XML Schema for LCRs

The namespace for this schema is the following:

    http://xmlns.oracle.com/streams/schemas/lcr

The schema is the following:

    http://xmlns.oracle.com/streams/schemas/lcr/streamslcr.xsd

See Also: Oracle XML DB Developer's Guide for more information about Oracle XML DB and for information about upgrading an existing XML schema for LCRs

## Definition of the XML Schema for LCRs

The following is the XML schema definition for LCRs:

    '<schema xmlns="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://xmlns.oracle.com/streams/schemas/lcr"
            xmlns:lcr="http://xmlns.oracle.com/streams/schemas/lcr"
            xmlns:xdb="http://xmlns.oracle.com/xdb"
              version="1.0"
            elementFormDefault="qualified">

      <simpleType name = "short_name">
        <restriction base = "string">
          <maxLength value="30"/>
        </restriction>
      </simpleType>

      <simpleType name = "long_name">
        <restriction base = "string">
          <maxLength value="4000"/>
        </restriction>
      </simpleType>

      <simpleType name = "db_name">
        <restriction base = "string">
          <maxLength value="128"/>
        </restriction>
      </simpleType>

      <!-- Default session parameter is used if format is not specified -->
      <complexType name="datetime_format">
        <sequence>
          <element name = "value" type = "string" nillable="true"/>
          <element name = "format" type = "string" minOccurs="0" nillable="true"/>
        </sequence>
      </complexType>

      <complexType name="anydata">
        <choice>
          <element name="varchar2" type = "string" xdb:SQLType="CLOB"
                                                            nillable="true"/>

          <!-- Represent char as varchar2. xdb:CHAR blank pads upto 2000 bytes! -->
          <element name="char" type = "string" xdb:SQLType="CLOB"
                                                            nillable="true"/>
          <element name="nchar" type = "string" xdb:SQLType="NCLOB"
                                                            nillable="true"/>

          <element name="nvarchar2" type = "string" xdb:SQLType="NCLOB"
                                                            nillable="true"/>
          <element name="number" type = "double" xdb:SQLType="NUMBER"
                                                            nillable="true"/>
          <element name="raw" type = "hexBinary" xdb:SQLType="BLOB"
                                                            nillable="true"/>
          <element name="date" type = "lcr:datetime_format"/>
          <element name="timestamp" type = "lcr:datetime_format"/>
          <element name="timestamp_tz" type = "lcr:datetime_format"/>
          <element name="timestamp_ltz" type = "lcr:datetime_format"/>

          <!-- Interval YM should be as per format allowed by SQL -->
          <element name="interval_ym" type = "string" nillable="true"/>

          <!-- Interval DS should be as per format allowed by SQL -->
          <element name="interval_ds" type = "string" nillable="true"/>

          <element name="urowid" type = "string" xdb:SQLType="VARCHAR2"
                                                            nillable="true"/>
        </choice>
      </complexType>

      <complexType name="column_value">
        <sequence>
          <element name = "column_name" type = "lcr:long_name" nillable="false"/>
          <element name = "data" type = "lcr:anydata" nillable="false"/>
          <element name = "lob_information" type = "string" minOccurs="0"
                                                               nillable="true"/>
          <element name = "lob_offset" type = "nonNegativeInteger" minOccurs="0"
                                                               nillable="true"/>
          <element name = "lob_operation_size" type = "nonNegativeInteger"
                                                 minOccurs="0" nillable="true"/>
          <element name = "long_information" type = "string" minOccurs="0"
                                                               nillable="true"/>
        </sequence>
      </complexType>

      <complexType name="extra_attribute">
        <sequence>
          <element name = "attribute_name" type = "lcr:short_name"/>
          <element name = "attribute_value" type = "lcr:anydata"/>
        </sequence>
      </complexType>

      <element name = "ROW_LCR" xdb:defaultTable="">
        <complexType>
          <sequence>
            <element name = "source_database_name" type = "lcr:db_name"
                                                                nillable="false"/>
            <element name = "command_type" type = "string" nillable="false"/>
            <element name = "object_owner" type = "lcr:short_name"
                                                                nillable="false"/>
            <element name = "object_name" type = "lcr:short_name"
                                                                nillable="false"/>
            <element name = "tag" type = "hexBinary" xdb:SQLType="RAW"
                                                   minOccurs="0" nillable="true"/>
            <element name = "transaction_id" type = "string" minOccurs="0"
                                                                 nillable="true"/>
            <element name = "scn" type = "double" xdb:SQLType="NUMBER"
                                                   minOccurs="0" nillable="true"/>
            <element name = "old_values" minOccurs = "0">
              <complexType>
                <sequence>
                  <element name = "old_value" type="lcr:column_value"
                                                        maxOccurs = "unbounded"/>
                </sequence>
              </complexType>
            </element>
            <element name = "new_values" minOccurs = "0">
              <complexType>
                <sequence>
                  <element name = "new_value" type="lcr:column_value"
                                                        maxOccurs = "unbounded"/>
                </sequence>
              </complexType>
            </element>
            <element name = "extra_attribute_values" minOccurs = "0">
              <complexType>
                <sequence>
                  <element name = "extra_attribute_value"
                           type="lcr:extra_attribute"
                           maxOccurs = "unbounded"/>
                </sequence>
              </complexType>
            </element>
          </sequence>
        </complexType>
      </element>

      <element name = "DDL_LCR" xdb:defaultTable="">
        <complexType>
          <sequence>
            <element name = "source_database_name" type = "lcr:db_name"
                                                            nillable="false"/>
            <element name = "command_type" type = "string" nillable="false"/>
            <element name = "current_schema" type = "lcr:short_name"
                                                            nillable="false"/>
            <element name = "ddl_text" type = "string" xdb:SQLType="CLOB"
                                                            nillable="false"/>
            <element name = "object_type" type = "string"
                                            minOccurs = "0" nillable="true"/>
            <element name = "object_owner" type = "lcr:short_name"
                                            minOccurs = "0" nillable="true"/>
            <element name = "object_name" type = "lcr:short_name"
                                            minOccurs = "0" nillable="true"/>
            <element name = "logon_user" type = "lcr:short_name"
                                            minOccurs = "0" nillable="true"/>
            <element name = "base_table_owner" type = "lcr:short_name"
                                            minOccurs = "0" nillable="true"/>
            <element name = "base_table_name" type = "lcr:short_name"
                                            minOccurs = "0" nillable="true"/>
            <element name = "tag" type = "hexBinary" xdb:SQLType="RAW"
                                            minOccurs = "0" nillable="true"/>
            <element name = "transaction_id" type = "string"
                                            minOccurs = "0" nillable="true"/>
            <element name = "scn" type = "double" xdb:SQLType="NUMBER"
                                            minOccurs = "0" nillable="true"/>
            <element name = "extra_attribute_values" minOccurs = "0">
              <complexType>
                <sequence>
                  <element name = "extra_attribute_value"
                           type="lcr:extra_attribute"
                           maxOccurs = "unbounded"/>
                </sequence>
              </complexType>
            </element>
          </sequence>
        </complexType>
      </element>
    </schema>';